In a typical system that uses analytics and has a traditional database, primary storage of data is on a disk with slower access than direct memory, and analytics are external to a database engine. If there is any data versioning, it is supported through applications external to the database engine and/or by storing multiple complete sets of data corresponding to the versions. Some systems support “multi-value concurrency control,” which is similar to multiple versions, but the different “version” only exists while a collection of transactions is being processed. If a user wants to query calculated data, the user runs the calculation and stores the results in the database; the user can then perform standard database queries of those results.
Other decision support tools, such as spreadsheets, typically have a single version of the data (or a complete copy), and all data must be managed by the user.
Source code control systems (SCCS) typically allow recovery of any version of files from a master copy and stored changes. Unlike a system for managing versions of data for processing, an SCCS does not include analytics related to the versioned data. An SCCS passes its retrieved version to a compiler or other text handling program whose output is the program in another form.
In a prior product currently provided by Webplan Inc. (assignee of the present invention), input data is stored in a server in server memory. There is no tight coupling to a back-end database. The data can be accessed rapidly from the server and inverse sets can be made from the data, but data storage is limited by physical memory and the address space of the underlying operating system. Records are stored in server memory with link, version, flag, and data fields. Analytics for making calculations on the input data are compiled as part of a database engine, making it difficult to change analytics for different applications. The server has a cache for storing results calculated from input data.
Some databases implement a model of stored procedures. Stored program elements are invoked directly by users, sometimes triggered by database activity such as inserts, deletes, or modifies. The results of the stored procedures are either stored back into the database or consist of a small set of data put into a temporary place.